/*!
 * \file WtExeFact.h
 * \project	WonderTrader
 *
 * \author Wesley
 * \date 2020/03/30
 *
 * \brief 执行工厂类定义
 * \details 定义了执行工厂类WtExeFact，用于创建和管理各种执行单元
 */
#pragma once
#include "../Includes/ExecuteDefs.h"

USING_NS_WTP;

/**
 * @class WtExeFact
 * @brief 执行工厂类
 * @details 实现IExecuterFact接口，负责创建和管理执行单元
 *          支持枚举可用的执行单元类型，创建和删除执行单元实例
 */
class WtExeFact : public IExecuterFact
{
public:
	/**
	 * @brief 构造函数
	 */
	WtExeFact();
	
	/**
	 * @brief 析构函数
	 */
	virtual ~WtExeFact();

public:
	/**
	 * @brief 获取工厂名称
	 * @return 返回工厂名称字符串
	 */
	virtual const char* getName() override;
	
	/**
	 * @brief 枚举执行单元
	 * @param cb 枚举回调函数，用于遍历所有可用的执行单元类型
	 */
	virtual void enumExeUnit(FuncEnumUnitCallback cb) override;

	/**
	 * @brief 创建执行单元
	 * @param name 执行单元名称
	 * @return 返回创建的执行单元指针，失败返回nullptr
	 */
	virtual ExecuteUnit* createExeUnit(const char* name) override;

	/**
	 * @brief 删除执行单元
	 * @param unit 要删除的执行单元指针
	 * @return 删除成功返回true，失败返回false
	 */
	virtual bool deleteExeUnit(ExecuteUnit* unit) override;

};

